package com.ftg.learn.chapter04;

import java.util.Arrays;

/**
 * 快排1
 *
 * @author lijiaxin
 * @version 1.0
 * @date 2023/5/27 10:56
 */

public class QuickSort1 {
    public static void main(String[] args) {
        int[] arr={10,13,30,4,5,9,23,1,6,7,19,34};
        quickRow(arr,0, arr.length-1);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 快排
     * @param arr 数组
     * @param low 开始
     * @param high 最大元素
     */
    public static void quickRow(int[] arr,int low,int high){
        /**
         * i 表示左侧
         * j 表示右侧
         * pivot 标准
         */
        int i,j,pivot;
        if(low>=high){
            return;
        }
        //左侧从哪里开始  0
        i=low;
        //右侧从哪里开始  arr.lrngth-1
        j=high;
        //现在标准是0
        pivot=arr[low];

        while(i<j){
            //右侧
            while(arr[j]>=pivot&&i<j){
                j--;
            }
            //左侧
            while(arr[i]<=pivot&&i<j){
                i++;
            }
            if(i<j){
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
        //标准交换
        arr[low]=arr[i];
        arr[i]=pivot;
        quickRow(arr,low,i-1);
        quickRow(arr,i+1,high);
    }

}
